package com.atguigu.easyexcel.listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.atguigu.easyexcel.entity.Subject;

import java.util.ArrayList;
import java.util.List;

//AnalysisEventListener的泛型的作用：会自动帮助我们解析读取到的一行记录转为该类型的对象
public class SubjectDataListener extends AnalysisEventListener<Subject> {
    //每读一行数据时回调
    private Integer limit = 5;//每五条记录批量保存一次
    private List<Subject> subjects = new ArrayList<Subject>();

    public void invoke(Subject subject, AnalysisContext analysisContext) {
        //将对象分批保存到数据库
        subjects.add(subject);
        if (subjects.size() == limit){
            System.out.println("开始保存课程分类数据到数据库..."+subjects.toString());
            subjects.clear();
        }
    }

    //整个文档解析完毕调用一次
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        if (subjects.size()>0){
            //将未保存的数据保存到数据库
            System.out.println("保存课程分类剩余的数据....."+subjects.toString());
            subjects.clear();
        }
    }
}
